package Logica;

import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;




import org.junit.Assert;
import org.junit.Test;

public class PartidaTestes {
	@Test
	public void TestePartida(){
		List<Jogador> jogadores = new ArrayList<Jogador>();
		
		Jogador j1 = new Jogador();
		j1.setNome("Agostinho");
		j1.setOrdemChegada(0);
		jogadores.add(j1);
		
		try {
			Partida p = new Partida(jogadores);
			Assert.fail("Deveria ter gerado exce��o");
		} catch (Exception e) {
			//e.printStackTrace();
		}
		
		Jogador j2 = new Jogador();
		j2.setNome("Michael Jefferson");
		j2.setOrdemChegada(1);
		jogadores.add(j2);
		
		Partida p = new Partida(jogadores);
		
		for(Jogador j: jogadores){
			Assert.assertTrue(j.getCartela() != null);
		}
		
		Assert.assertEquals(j1, p.getJogadorAtual());
		
	}
	
	@Test
	public void TesteLancaDados(){
		List<Jogador> jogadores = new ArrayList<Jogador>();
		
		Jogador j1 = new Jogador();
		j1.setOrdemChegada(0);
		jogadores.add(j1);
		
		Jogador j2 = new Jogador();
		j2.setOrdemChegada(1);
		jogadores.add(j2);
		
		Partida p = new Partida(jogadores);
		
		try {
			p.lancarDados(j2);
			Assert.fail("Deveria ter gerado exce��o!");
		} catch (Exception e) {
			
		}
		
		p.lancarDados(j1);
		
	}
	
	@Test
	public void TesteLancarDado(){
		Dado d = new Dado();
		List<Jogador> jogadores = new ArrayList<Jogador>();
		
		Jogador j1 = new Jogador();
		j1.setOrdemChegada(0);
		jogadores.add(j1);
		
		Jogador j2 = new Jogador();
		j2.setOrdemChegada(1);
		jogadores.add(j2);
		
		Partida p = new Partida(jogadores);
		
		try {
			p.lancarDado(j1, 1);
			
			Assert.fail("� sua primeira jogada!");
		} catch (Exception e) {

		}
		
		p.lancarDados(j1);
		int[] resultados = Arrays.copyOf(p.getResultados(), 5);
		p.lancarDado(j1, 2, 4);
		int[] resultados2 = p.getResultados();
		Assert.assertEquals(resultados[0], resultados2[0]);
		Assert.assertEquals(resultados[1], resultados2[1]);
		Assert.assertEquals(resultados[3], resultados2[3]);
		p.lancarDado(j1, 0);
		
		try {
			p.lancarDado(j1, 3);
			Assert.fail("Voc� ultrapassou seus lan�amentos");
		} catch (Exception e) {
			
		}
	}
	
	@Test
	public void TesteUm(){
		
		Dado d = new Dado();
		List<Jogador> jogadores = new ArrayList<Jogador>();
		
		Jogador j1 = new Jogador();
		j1.setOrdemChegada(0);
		j1.setNome("jose");
		jogadores.add(j1);
		
		Jogador j2 = new Jogador();
		j2.setOrdemChegada(1);
		j2.setNome("tiao");
		jogadores.add(j2);
		
		Partida p = new Partida(jogadores);
		
		p.lancarDados(j1);
		p.jogadaUm();
		p.getJogadorAtual();
		j1.getCartela().getCartelaLista();
		p.lancarDados(j2);
		p.jogadaUm();
		p.lancarDados(j1);
		p.jogadaDois();
		j1.getCartela().getUm();
		j1.getCartela().getDois();
		j1.getCartela().getTotal();
		
		Assert.assertEquals(p.getJogadorAtual(), j1);
		
	}	
}